<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
    //     let p1 = new Promise((resolve,reject) =>{
    //         setTimeout(() =>{
    //             resolve("成功1");
    //         },1000)
    //     })

    //     let p2 = new Promise((resolve,reject) =>{
    //         setTimeout(() =>{
    //             // resolve("成功2");
    //             reject("失败");
    //         },2000)
    //     })

    //     // 几个静态方法
    //   // Promise.all()  接收一个参数 数组，数组全部要求是promise对象
    //   // 返回值也是一个promise对象

    //   // 只有当参数数组中所有的promise对象 状态都为fulfilled，
    // //   返回值的状态才是fullfilled， 结果是一个数组，所有的promise对象的结果
    //   let result = Promise.all([p1,p2]);

    //   result.then((data) =>{
    //       console.log(data);

    //   }).catch(error =>{
    //       console.log(error);
    //   })
    //   // 一组异步任务 都必须成功的情况下 进行下一步操作 就可以使用 Promise.all



      
        // Promise.race()  race竞赛
        // let p1 = new Promise((resolve,reject) =>{
        //     setTimeout(() =>{
        //         resolve("成功1");
        //     },100)
        // })

        // let p2 = new Promise((resolve,reject) =>{
        //     setTimeout(() =>{
        //         // resolve("成功2");
        //         reject("失败1");
        //     },2000)
        // })

        // let p3 = new Promise((resolve,reject) =>{
        //     setTimeout(() =>{
        //         // resolve("成功2");
        //         reject("失败2");
        //     },500)
        // })


        // let result = Promise.race([p1,p2,p3]);

        // result.then((data) =>{
        //     console.log(data);
        // }).catch(error =>{
        //     console.log(error);
        // })



        //   ES2020 Promise.allSettled  返回值只有一种状态 fulfilled
        // let p1 = new Promise((resolve,reject) =>{
        //     setTimeout(() =>{
        //         resolve("成功1");
        //     },100)
        // })

        // let p2 = new Promise((resolve,reject) =>{
        //     setTimeout(() =>{
        //         // resolve("成功2");
        //         reject("失败1");
        //     },2000)
        // })

        // let p3 = new Promise((resolve,reject) =>{
        //     setTimeout(() =>{
        //         // resolve("成功2");
        //         reject("失败2");
        //     },500)
        // })


        // let result = Promise.allSettled([p1,p2,p3]);

        // result.then((data) =>{
        //     console.log(data);
        // }).catch(error =>{
        //     console.log(error);
        // })



        // ES2021 Promise.any   any任意一个 只要是fullfilled
        // let p1 = new Promise((resolve,reject) =>{
        //     setTimeout(() =>{
        //         resolve("成功1");
        //         // reject("失败3")
        //     },100)
        // })

        // let p2 = new Promise((resolve,reject) =>{
        //     setTimeout(() =>{
        //         resolve("成功2");
        //         // reject("失败1");
        //     },2000)
        // })

        // let p3 = new Promise((resolve,reject) =>{
        //     setTimeout(() =>{
        //         // resolve("成功2");
        //         reject("失败2");
        //     },500)
        // })


        // let result = Promise.any([p1,p2,p3]);

        // result.then((data) =>{
        //     console.log(data);
        // }).catch(error =>{
        //     console.log(error);
        // })


         //   Promise.resolve() 返回一个状态为 fulfilled的promise实例
        // Promise.reject()  返回的是一个状态为 rejected 的promise实例
        console.log(Promise.resolve(1))
        console.log(Promise.reject(new Error('错误')))
    </script>
</body>
</html>